﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Ext.Net;
using ENT.GP.Core.Autenticacion;
using ENT.GP.Core.Core;
using ENT.GP.Core;
using entgp.Code;
using ParameterCollection = Ext.Net.ParameterCollection;

namespace entgp.Usuarios
{
    public partial class Usuarios : PaginasUsuario
    {
       
        private int IdEmp
        {
            get
            {
                int idEmpresa = 0;
                if (Session["CodigoEmpSelect2"] != null)
                    int.TryParse(Session["CodigoEmpSelect2"].ToString(), out idEmpresa);
                return (idEmpresa);

            }

            set
            {
                Session["CodigoEmpSelect2"] = value;

            }


        }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    int idLink = 0;
                    int.TryParse(Page.Request.QueryString.Get("RG"), out idLink);
                    EmpresaLookup.InvalidateCache();
                    sEmpresas.DataSource = EmpresaLookup.GetNameValueList(this.IdEmp);
                    sEmpresas.DataBind();

                    if (idLink == 1)
                    {
                        this.wSelectEmpresa.Show();
                    }
                    else
                    {
                        int.TryParse(Session["CodigoEmp"].ToString(), out  idLink);
                        this.IdEmp = idLink;
                        RolesLookup.InvalidateCache();
                        StoreRol.DataSource = RolesLookup.GetNameValueList(this.IdEmp);
                        StoreRol.DataBind();
                        NewChooseEmp(false);
                    }

                }
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.ToString());
            }            
        }
        //
        private void NewChooseEmp(Boolean bValue)
        {
            this.lblNewSeeK.Visible = bValue;
            this.cbxChoseeEmp.Visible = bValue;
            this.btnNuevaBusqueda.Visible = bValue;
        }
        protected void btnNewSeeK_Click(object sender, DirectEventArgs e)
        {
            try
            {
                var ide = e.ExtraParams["IdEmp"];
                int idEmpTmp;
                int.TryParse(ide, out idEmpTmp);
                this.IdEmp = idEmpTmp;

                RolesLookup.InvalidateCache();

                //GridPanelUsuarios
                GridPanelUsuarios.Title = "Listado de Usuarios de " + e.ExtraParams["Emp"];
                StoreRol.DataSource = RolesLookup.GetNameValueList(this.IdEmp);
                StoreRol.DataBind();

                this.StoreUsuario.RemoveAll();
                this.cbxRol.SetValue("");
                this.txtNombreUsuario.SetValue("");
            }
            catch { }
        }
         /// <summary>
        /// Invoca metodo para actualizar datos de la grid
        /// </summary>
        private static void CallRefreshGrid()
        {
            X.Js.AddScript("#{StoreUsuario}.load();");
        }
        protected void StoreRefresh(object sender, StoreRefreshDataEventArgs e)
        {
            string sTxtNombreUsuario =e.Parameters["txtNombreUsuario_bprm"];
            var vCbxRol = e.Parameters["cbxRol_bprm"];
            int idRol   = 0;
            int.TryParse(vCbxRol, out idRol);
            UsuarioCriterio criterio = UsuarioCriterio.NewUsuarioCriterioRoot();
            criterio.RolId     = idRol;
            if (sTxtNombreUsuario.Length!=0)
                criterio.Nombre    = string.Format("{0}%",sTxtNombreUsuario );
            criterio.IDEmpresa = this.IdEmp;
            StoreUsuario.DataSource = UsuarioLista.GetUsuarioLista(criterio);
            StoreUsuario.DataBind();
           
        }
        protected void btnNuevo_Click(object sender, DirectEventArgs e)
        {
            string operacion = e.ExtraParams["Operacion"];
            wucUsuarios1.Mostrar(operacion,0,true);
        }
        [DirectMethod]
        public void activarUsuario(int id,string estado)
        {
            try
            {
                
                Usuario.ActualizarEstado(id, estado);
                //btnBuscar_Click(new object() , new DirectEventArgs( new ParameterCollection() ));
                CallRefreshGrid();
                
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.ToString());
                UtilP.MostrarNotificacion("El elemento no se activo/desactivo", "Aviso", MessageBox.Icon.ERROR);
            }

        }

        
        protected void command_Click(object sender, DirectEventArgs e)
        {
            string operacion = e.ExtraParams["Operacion"];
            string sEstado   = e.ExtraParams["Estado"];
            string sUsuario   = e.ExtraParams["Usuario"];

            int idUsuario;
            int.TryParse(e.ExtraParams["Id"],out idUsuario);
            if (operacion == "Editar")
                wucUsuarios1.Mostrar(operacion, idUsuario,true);
            else
            {

                string uEstado  = (sEstado == "ACTIVO") ? "INACTIVO" : "ACTIVO";
                string mEstado = (sEstado == "ACTIVO") ? "Inactivar" : "Activar";
                string tHandler = "try{UsuariosAjax.activarUsuario(" + idUsuario.ToString()+ ",'" + uEstado+"')";
                tHandler += " ";
                tHandler += "}catch (err){alert(err);}";
                //record.set('Estado', 'hola mundo....');
                X.Msg.Confirm("Aviso", "Esta seguro de " + mEstado + " al Usuario " + sUsuario,
                            new MessageBoxButtonsConfig
                            {
                                Yes = new MessageBoxButtonConfig
                                {

                                    Handler = tHandler,
                                    
                                    Text = "Si"
                                },
                                No = new MessageBoxButtonConfig
                                {
                                    Text = "No"
                                }
                            }).Show();

            
            }
        }


        protected void btnSelecionar_Click(object sender, DirectEventArgs e)
        {
            try
            {
                var ide=e.ExtraParams["IdEmp"];
                int id;
                
                int.TryParse(ide, out id);
                this.IdEmp = id;
                //gdpCatalogos.Title = "Listado de Catalogos de " + cbxEmpresas.SelectedItem.Text;
                RolesLookup.InvalidateCache();
                //GridPanelUsuarios
                GridPanelUsuarios.Title = "Listado de Usuarios de " + e.ExtraParams["Emp"];
                StoreRol.DataSource = RolesLookup.GetNameValueList(this.IdEmp);
                StoreRol.DataBind();

              

                this.wSelectEmpresa.Hide();
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex.ToString());
            }
        }
    
    
    }
}
